home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-11-17 | 79.5 KB | 2,483 lines |
- diff -rc --new-file orig/mush-7.2.5/Makefile mush-7.2.5/Makefile
- *** orig/mush-7.2.5/Makefile Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/Makefile Wed Oct 27 17:22:17 1993
- ***************
- *** 0 ****
- --- 1,70 ----
- + # makefile.linux (c) copyright 1991 (Dan Heller)
- + #
- + HDRS= mush.h config.h-dist strings.h bindings.h options.h version.h glob.h pop.h
- +
- + SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c print.c dates.c \
- + signals.c setopts.c msgs.c pick.c sort.c expr.c folders.c \
- + loop.c viewopts.c curses.c curs_io.c bind.c file.c strings.c \
- + lock.c macros.c options.c addrs.c malloc.c glob.c command2.c \
- + pop.c pmush.c xcreat.c
- + OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
- + signals.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
- + folders.o dates.o loop.o viewopts.o curses.o curs_io.o bind.o \
- + lock.o macros.o options.o addrs.o malloc.o glob.o command2.o \
- + pop.o pmush.o xcreat.o
- +
- + HELP_FILES= README README-7.0 README-7.1 README-7.2.0 README-7.2.2 \
- + README-7.2.4 mush.1 cmd_help Mushrc Mailrc Gnurc \
- + sample.mushrc advanced.mushrc digestify
- +
- + MAKES= makefile.bsd makefile.xenix makefile.sys.v makefile.hpux makefile.sun
- +
- + # See the README for changes needed to compile under Ultrix.
- + # In particular, you may need -DSIGRET=void and/or -ltermcap.
- + CFLAGS= -O2 -Olimit 1024 -DBSD -D_BSD_SOURCE -DCURSES -DSIGRET=void
- + LDFLAGS= -s
- + LINTFLAGS= -bxah -Dlint -DCURSES -DBSD -D_BSD_SOURCE
- + LIBS= -lcurses -ltermcap
- + OTHERLIBS=
- + # Use some variant of this one if you #define MMDF in config.h
- + #OTHERLIBS=/usr/src/mmdf/lib/libmmdf.a
- +
- + mush: $(OBJS)
- + @echo loading...
- + @cc $(LDFLAGS) $(OBJS) $(LIBS) $(OTHERLIBS) -o mush
- +
- + $(OBJS): config.h mush.h
- + loop.o: version.h
- +
- + tape:
- + @tar cv $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- +
- + tar:
- + @tar fcv MUSH $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- +
- + tarmail:
- + tar fcv - $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES) | \
- + compress | btoa > mush.tarmail
- +
- + lint:
- + lint $(LINTFLAGS) $(SRCS)
- +
- + clean:
- + rm -f *.o core mush
- +
- + BINDIR= /usr/bin
- + LIBDIR= /usr/lib
- + MRCDIR= /usr/lib
- + MANDIR= /usr/man/man1
- + MANEXT= 1
- +
- + install: mush
- + mv mush $(BINDIR)
- + strip $(BINDIR)/mush
- + chmod 0755 $(BINDIR)/mush
- + cp mush.1 $(MANDIR)/mush.$(MANEXT)
- + chmod 0644 $(MANDIR)/mush.$(MANEXT)
- + cp cmd_help $(LIBDIR)
- + chmod 0644 $(LIBDIR)/cmd_help
- + cp Mushrc $(MRCDIR)/Mushrc
- + chmod 0644 $(MRCDIR)/Mushrc
- diff -rc --new-file orig/mush-7.2.5/README-7.2.5+ mush-7.2.5/README-7.2.5+
- *** orig/mush-7.2.5/README-7.2.5+ Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/README-7.2.5+ Wed Oct 27 18:14:32 1993
- ***************
- *** 0 ****
- --- 1,37 ----
- + This is release 7.2.5+ of the Mail User's Shell (mush).
- + This subservion was done on 931027
- +
- + Sinze Z-mailer, the productified version of mush, has been introduced,
- + the authors of mush have not released (surprise, surprise) any update
- + to mush 7.2.5; here is a small one, perhaps it should be called 7.3.
- +
- + The changes are:
- +
- + * ported to Linux (this has been based on Linus Torvalds' own port).
- +
- + * faster sorting on subject, by caching in core the subject line; this
- + raises the working set, but the speedup is spectacular.
- +
- + * sorting on To: or Newsgroups: line.
- +
- + * pop3 support improved; the mailbox will not be checked (with consequent
- + request for the password) at inconvenient times, like when composing
- + a message to send, or if in mailbox mode. I actually think that the
- + mailbox should not be checked automatically at all, but what the heck.
- +
- + I have felt tempted to do more extensive surgery, like:
- +
- + * completely removing tool mode, which just complicates the source, is
- + not so elegant, and is obsolete by now.
- +
- + * perhaps removing curses mode entirely too, as there are too many whacky
- + compromises to shoehorn it in; it should be replaced, like tool mode,
- + by a full screen frontend running as a separate process.
- +
- + * cleaning up header line generation. Currently the header lines are rebuilt
- + every time. Perhaps they ought to be cached, after all they are not
- + that large. At the very least the ones on the current page in curses mode
- + ought to be cached.
- +
- + But these mods, while sensible, would require a new release number for mush
- + (say version 8), and I don't know who are the current maintainers...
- diff -rc --new-file orig/mush-7.2.5/cmd_help mush-7.2.5/cmd_help
- *** orig/mush-7.2.5/cmd_help Fri May 17 02:28:46 1991
- --- mush-7.2.5/cmd_help Wed Oct 27 18:08:16 1993
- ***************
- *** 430,441 ****
- %%
-
- %sort%
- ! sort [-i] [-r|a|d|l|R|s|S]
-
- -i ignore case in alphabetical sorts
- -r reverse order of next criteria
-
- -a by author (alphabetical)
- -d according to date
- -l by length (size in characters, not lines)
- -p by priority (marks)
- --- 430,442 ----
- %%
-
- %sort%
- ! sort [-i] [-r|a|t|d|l|R|s|S]
-
- -i ignore case in alphabetical sorts
- -r reverse order of next criteria
-
- -a by author (alphabetical)
- + -t by target (alphabetical)
- -d according to date
- -l by length (size in characters, not lines)
- -p by priority (marks)
- diff -rc --new-file orig/mush-7.2.5/config.h mush-7.2.5/config.h
- *** orig/mush-7.2.5/config.h Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/config.h Sun Oct 17 15:31:38 1993
- ***************
- *** 0 ****
- --- 1,260 ----
- + /* config.h 1.1 (c) copyright 1986 (Dan Heller) */
- +
- + /* Default names and locations for files */
- + #define MAILRC ".mushrc"
- + #define ALTERNATE_RC ".mailrc"
- + #define DEFAULT_RC "/usr/lib/Mushrc"
- + #define ALT_DEF_RC "/usr/lib/Mail.rc"
- + #define SIGNATURE ".signature"
- + #define FORTUNE "/usr/games/fortune"
- + #define COMMAND_HELP "/usr/lib/cmd_help"
- + #ifdef SUNTOOL
- + # define TOOL_HELP "/usr/lib/tool_help"
- + #endif /* SUNTOOL */
- + #define ALTERNATE_HOME "/tmp" /* Path must be read/write to EVERYONE */
- + #define EDFILE ".edXXXXXX" /* file/pathname added to user's "home" */
- +
- + #define LS_COMMAND "ls"
- + #define LPR "lpr"
- + #define DEF_PRINTER "lp"
- + /* If your lpr command understands only -P or -d (or some other flag) then
- + * define PRINTER_OPT to the appropriate value. If you want to be able to
- + * use either one, don't define this at all. The defaults (when neither
- + * -P nor -d is used on the mush "lpr" command line) are as noted here.
- + * If your lpr requires that the option and the printer name be separate
- + * arguments, include a trailing space in this definition.
- + */
- + #ifdef SYSV
- + #define PRINTER_OPT "-d"
- + #endif /* SYSV */
- + #ifdef BSD
- + #define PRINTER_OPT "-P"
- + #endif /* BSD */
- +
- + /* default settings for some variable strings */
- + #define DEF_PROMPT "Msg %m of %t: "
- + #define DEF_PAGER "more" /* set to "internal" to use internal pager */
- + #define DEF_SHELL "sh"
- + #define DEF_EDITOR "vi"
- + #define DEF_FOLDER "~/Mail" /* default Mail folder */
- + #define DEF_MBOX "~/mbox" /* default mbox */
- + #define DEF_INDENT_STR "> " /* indent included mail */
- + #define DEF_ESCAPE "~"
- + #define DEF_HDR_FMT "%25f %7d (%l/%c) \"%s\"" /* default hdr_format */
- + #define DEF_CURSES_HELP \
- + "display save mail reply next-msg back-msg screen-next screen-back"
- +
- + /* Headers that will NOT be included when forwarding mail */
- + #define IGNORE_ON_FWD "status,priority,return-receipt-to"
- +
- + #define MAXMSGS 1000 /* Maximum number of messages we can read */
- + #define HDRSIZ (2*BUFSIZ) /* This should not be < BUFSIZ! */
- +
- + /*
- + * Define INTERNAL_MALLOC and recompile if you have trouble with mush
- + * core-dumping due to malloc/free errors. Also, if you run a System 5
- + * variant, you might notice a performance improvement if you define this
- + * variable. It uses the malloc distributed by Larry Wall for perl v2.
- + */
- + /* #define INTERNAL_MALLOC /**/
- +
- + /*
- + * Define TIMEZONE if your system has neither the SysV external variable
- + * tzname nor the BSD timezone() function. The example below is for
- + * Gould BSD4.3 systems; others should define it as a string, e.g. "PST"
- + * If TIMEZONE is defined, DAYLITETZ can also be defined, e.g. "PDT"
- + *
- + * Define USA if you are using US/NorthAmerican time zone abbreviations.
- + * If USA is not defined, dates in outgoing mail will include timezones
- + * specified as offsets from GMT, e.g. Pacific Standard Time is -0800.
- + */
- + /* #define TIMEZONE T->tm_zone /**/
- + /* #define USA /**/
- +
- + /* mail delivery system macros and defines... */
- +
- + /*
- + * For POP3_SUPPORT, define this. Mush will act as a POP-3 client,
- + * periodically calling the server on the machine described by the
- + * environment variable MAILHOST to pick up new mail.
- + */
- + #define POP3_SUPPORT /**/
- + #ifdef POP3_SUPPORT
- + #define HOMEMAIL
- + #endif /* POP3_SUPPORT */
- +
- + /*
- + * If you are using MMDF, define MMDF here.
- + */
- + /* #define MMDF /**/
- + #if defined(M_UNIX) && defined(M_XENIX)
- + #define MMDF
- + /* #define M_EXECMAIL /* Define if you haven't fixed submit permissions */
- + #endif /* M_UNIX && M_XENIX */
- + #ifdef MMDF
- + /*
- + * If MMDF delivers mail the user's home directory, define HOMEMAIL.
- + * Also check the definition of the delivery file name MAILFILE, below.
- + */
- + /* #define HOMEMAIL /**/
- + #ifdef M_EXECMAIL
- + #define MAIL_DELIVERY "/usr/lib/mail/execmail"
- + # define VERBOSE_ARG "-v"
- + # define METOO_ARG "-m"
- + #else /* M_EXECMAIL */
- + #define MAIL_DELIVERY "exec /usr/mmdf/bin/submit -mlnr"
- + #define VERBOSE_ARG "Ww"
- + #define MTA_EXIT 9 /* exit status for successful submit */
- + #endif /* M_EXECMAIL */
- + #else /* MMDF */
- + /*
- + * If you are not using MMDF, check these definitions.
- + */
- + #define MAIL_DELIVERY "/usr/lib/sendmail -i" /* "-i" works like "-oi" */
- + #define VERBOSE_ARG "-v" /* undef if none exists */
- + #define METOO_ARG "-m" /* man sendmail for more info. */
- + #define MTA_EXIT 0 /* exit status for successful mail delivery */
- + #endif /* MMDF */
- +
- + /* If your mail transfer agent uses something *besides* "From " to separate
- + * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
- + * If that string is 4 ^A's, then the string would be "\001\001\001\001".
- + * With the exception of MMDF, below, you should OMIT a trailing newline
- + * from the setting of MSG_SEPARATOR.
- + * If you don't know what any of this means, leave it alone.
- + */
- + /* #define MSG_SEPARATOR "From " /**/
- + #ifdef MMDF
- + /*
- + * These values should be identical (respectively) to the contents of
- + * delim1 and delim2 in MMDFSRC/conf/yoursite/conf.c (sans newline).
- + */
- + #define MSG_SEPARATOR "\001\001\001\001\n"
- + #define END_MSG_SEP "\001\001\001\001\n"
- + /*
- + * You only need to define LCKDFLDIR if you have MMDF configured to use the
- + * locking routines in lib/util/lk_lock.c (ie., link(2)-based locking).
- + * Most of you WILL NOT need this, since you probably use one of the more
- + * sophisticated locking modules provided with MMDF. Remember to alter the
- + * Makefile so as to access the MMDF library at the link step.
- + */
- + /* #define LCKDFLDIR "/usr/spool/mmdf/lockfiles" /* (for example) */
- + #else /* !MMDF */
- + #ifdef M_XENIX
- + #define DOT_LOCK /* DOT_LOCK should be used for SCO Xenix */
- + #endif /* M_XENIX */
- + #endif /* MMDF */
- +
- + #ifdef HOMEMAIL
- + #define MAILFILE ".mailbox" /* or whatever */
- + #else /* HOMEMAIL */
- + #ifndef MAILDIR
- + #if defined(SYSV) && !defined(SVR4)
- + #define MAILDIR "/usr/mail"
- + #else /* BSD || SVR4 */
- + #define MAILDIR "/usr/spool/mail"
- + #endif /* SYSV && !SVR4 */
- + #endif /* MAILDIR */
- + #endif /* HOMEMAIL */
- +
- + /* If your mailer does not understand commas between addresses, you should
- + * define NO_COMMAS. This includes pre-3.0 smail and default MTAs used on
- + * xenix, and sys-v systems.
- + * This does NOT apply to MMDF or sendmail, in most cases. SunOS 4.1 as
- + * shipped needs this, but note that if you are allowing mush to default
- + * to SUN_4_1 (see the end of this file) you won't get this.
- + */
- + #ifdef SUN_4_1 /* SunOS 4.1 has warped sendmail.cf */
- + #define NO_COMMAS /**/
- + #endif /* SUN_4_1 */
- +
- + /*
- + * Most RFC822-compliant mailers (sendmail) will add the headers From:
- + * and Date: on outgoing mail. If the user or UA sends these headers,
- + * such MTAs will generally use the headers as the user or UA set them.
- + * Mailers that are not RFC822-compliant sometimes fail to add these
- + * headers at all, so the UA must supply them. Mush normally does so.
- + *
- + * However, there are certain MTAs which will insist on adding new From:
- + * and Date: headers. These "picky mailers" may remove the user or UA
- + * From: and Date: headers, or they may leave them but insert a leading
- + * '>', which makes the headers very ugly and redundant or contradictory.
- + * PICKY_MAILER prevents mush from adding From: or Date:, so the MTA can.
- + *
- + * Many RFC822-compliant mailers are "picky", including certain sendmail
- + * configurations. It is advisable to set PICKY_MAILER *UNLESS* your MTA
- + * is known not to be RFC822 compiant (xenix, older sys-v) or can be
- + * counted on to pass through user-defined headers without modification.
- + */
- + /* #define PICKY_MAILER /**/
- +
- + /* If your system supports the vprintf() functions, True for sys-v and
- + * later sun versions (3.0+ ?). Typically not true for BSD systems, but
- + * that will probably change in the future.
- + */
- + #if defined(__linux__) || defined(SYSV) || defined(sun)
- + #define VPRINTF
- + #endif /* __linux__ || SYSV || sun */
- +
- + /* If your system uses the getwd() system call (as opposed to getcwd()),
- + * and your system is not a BSD system (e.g. MIPS), define GETWD below.
- + */
- + /* #define GETWD /**/
- +
- + /* If your system has the BSD-style directory routines (opendir/readdir),
- + * define DIRECTORY. This happens automatically in glob.h for BSD.
- + */
- + #if defined(SVR4) || defined(__linux__)
- + #define DIRECTORY
- + #endif /* SVR4 || __linux__ */
- +
- + /* If your system has the POSIX "utimbuf" structure for utime(2),
- + * define POSIX_UTIME. You may have to change <sys/utime.h> to <utime.h>
- + * in mush.h.
- + */
- + #if defined(__linux__) || (defined(SVR4) && !defined(sun))
- + #define POSIX_UTIME
- + #endif /* __linux__ || (SVR4 && !sun) */
- +
- + /* The remainder of this file attempt to automatically supply some sanity.
- + * You shouldn't need to change this part unless your system is really odd.
- + */
- +
- + #ifdef BSD
- + # undef SYSV /* Sorry, can't do both BSD and SYSV */
- + # undef SVR4
- + # undef SVR3
- + # undef SVR2
- + #endif /* BSD */
- + #if defined(SUNTOOL) || defined(SUN_3_5) || defined(SUN_4_0) || defined(SUN_4_1)
- + #if !defined(BSD) && !defined(SYSV)
- + # define BSD /* default to BSD */
- + #endif /* !BSD && !SYSV */
- + #if !defined(SUN_3_5) && !defined(SUN_4_0)
- + # ifndef SUN_4_1
- + # define SUN_4_1 /* default to sun 4.1 */
- + # endif /* SUN_4_1 */
- + # define SUN_4_0 /* 4.0 stuff needed too */
- + #endif /* !SUN_3_5 && !SUN_4_0 */
- + #ifdef SUN_4_0
- + # undef SUN_3_5
- + # undef SIGRET
- + # define SIGRET void
- + #endif /* SUN_4_0 */
- + #endif /* SUNTOOL || SUN_3_5 || SUN_4_0 || SUN_4_1 */
- + #ifdef SVR4
- + # undef SVR3
- + # undef SYSV
- + # define SYSV
- + #else
- + #ifdef SYSV
- + # undef SVR3
- + # ifndef SVR2
- + # define SVR3
- + # endif /* SVR2 */
- + #endif /* SYSV */
- + #endif /* SVR4 */
- + #ifdef SVR3
- + # undef SYSV
- + # define SYSV
- + #endif /* SVR3 */
- diff -rc --new-file orig/mush-7.2.5/config.h-linux mush-7.2.5/config.h-linux
- *** orig/mush-7.2.5/config.h-linux Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/config.h-linux Sun Oct 17 15:31:29 1993
- ***************
- *** 0 ****
- --- 1,260 ----
- + /* config.h 1.1 (c) copyright 1986 (Dan Heller) */
- +
- + /* Default names and locations for files */
- + #define MAILRC ".mushrc"
- + #define ALTERNATE_RC ".mailrc"
- + #define DEFAULT_RC "/usr/lib/Mushrc"
- + #define ALT_DEF_RC "/usr/lib/Mail.rc"
- + #define SIGNATURE ".signature"
- + #define FORTUNE "/usr/games/fortune"
- + #define COMMAND_HELP "/usr/lib/cmd_help"
- + #ifdef SUNTOOL
- + # define TOOL_HELP "/usr/lib/tool_help"
- + #endif /* SUNTOOL */
- + #define ALTERNATE_HOME "/tmp" /* Path must be read/write to EVERYONE */
- + #define EDFILE ".edXXXXXX" /* file/pathname added to user's "home" */
- +
- + #define LS_COMMAND "ls"
- + #define LPR "lpr"
- + #define DEF_PRINTER "lp"
- + /* If your lpr command understands only -P or -d (or some other flag) then
- + * define PRINTER_OPT to the appropriate value. If you want to be able to
- + * use either one, don't define this at all. The defaults (when neither
- + * -P nor -d is used on the mush "lpr" command line) are as noted here.
- + * If your lpr requires that the option and the printer name be separate
- + * arguments, include a trailing space in this definition.
- + */
- + #ifdef SYSV
- + #define PRINTER_OPT "-d"
- + #endif /* SYSV */
- + #ifdef BSD
- + #define PRINTER_OPT "-P"
- + #endif /* BSD */
- +
- + /* default settings for some variable strings */
- + #define DEF_PROMPT "Msg %m of %t: "
- + #define DEF_PAGER "more" /* set to "internal" to use internal pager */
- + #define DEF_SHELL "sh"
- + #define DEF_EDITOR "vi"
- + #define DEF_FOLDER "~/Mail" /* default Mail folder */
- + #define DEF_MBOX "~/mbox" /* default mbox */
- + #define DEF_INDENT_STR "> " /* indent included mail */
- + #define DEF_ESCAPE "~"
- + #define DEF_HDR_FMT "%25f %7d (%l/%c) \"%s\"" /* default hdr_format */
- + #define DEF_CURSES_HELP \
- + "display save mail reply next-msg back-msg screen-next screen-back"
- +
- + /* Headers that will NOT be included when forwarding mail */
- + #define IGNORE_ON_FWD "status,priority,return-receipt-to"
- +
- + #define MAXMSGS 1000 /* Maximum number of messages we can read */
- + #define HDRSIZ (2*BUFSIZ) /* This should not be < BUFSIZ! */
- +
- + /*
- + * Define INTERNAL_MALLOC and recompile if you have trouble with mush
- + * core-dumping due to malloc/free errors. Also, if you run a System 5
- + * variant, you might notice a performance improvement if you define this
- + * variable. It uses the malloc distributed by Larry Wall for perl v2.
- + */
- + /* #define INTERNAL_MALLOC /**/
- +
- + /*
- + * Define TIMEZONE if your system has neither the SysV external variable
- + * tzname nor the BSD timezone() function. The example below is for
- + * Gould BSD4.3 systems; others should define it as a string, e.g. "PST"
- + * If TIMEZONE is defined, DAYLITETZ can also be defined, e.g. "PDT"
- + *
- + * Define USA if you are using US/NorthAmerican time zone abbreviations.
- + * If USA is not defined, dates in outgoing mail will include timezones
- + * specified as offsets from GMT, e.g. Pacific Standard Time is -0800.
- + */
- + /* #define TIMEZONE T->tm_zone /**/
- + /* #define USA /**/
- +
- + /* mail delivery system macros and defines... */
- +
- + /*
- + * For POP3_SUPPORT, define this. Mush will act as a POP-3 client,
- + * periodically calling the server on the machine described by the
- + * environment variable MAILHOST to pick up new mail.
- + */
- + #define POP3_SUPPORT /**/
- + #ifdef POP3_SUPPORT
- + #define HOMEMAIL
- + #endif /* POP3_SUPPORT */
- +
- + /*
- + * If you are using MMDF, define MMDF here.
- + */
- + /* #define MMDF /**/
- + #if defined(M_UNIX) && defined(M_XENIX)
- + #define MMDF
- + /* #define M_EXECMAIL /* Define if you haven't fixed submit permissions */
- + #endif /* M_UNIX && M_XENIX */
- + #ifdef MMDF
- + /*
- + * If MMDF delivers mail the user's home directory, define HOMEMAIL.
- + * Also check the definition of the delivery file name MAILFILE, below.
- + */
- + /* #define HOMEMAIL /**/
- + #ifdef M_EXECMAIL
- + #define MAIL_DELIVERY "/usr/lib/mail/execmail"
- + # define VERBOSE_ARG "-v"
- + # define METOO_ARG "-m"
- + #else /* M_EXECMAIL */
- + #define MAIL_DELIVERY "exec /usr/mmdf/bin/submit -mlnr"
- + #define VERBOSE_ARG "Ww"
- + #define MTA_EXIT 9 /* exit status for successful submit */
- + #endif /* M_EXECMAIL */
- + #else /* MMDF */
- + /*
- + * If you are not using MMDF, check these definitions.
- + */
- + #define MAIL_DELIVERY "/usr/lib/sendmail -i" /* "-i" works like "-oi" */
- + #define VERBOSE_ARG "-v" /* undef if none exists */
- + #define METOO_ARG "-m" /* man sendmail for more info. */
- + #define MTA_EXIT 0 /* exit status for successful mail delivery */
- + #endif /* MMDF */
- +
- + /* If your mail transfer agent uses something *besides* "From " to separate
- + * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
- + * If that string is 4 ^A's, then the string would be "\001\001\001\001".
- + * With the exception of MMDF, below, you should OMIT a trailing newline
- + * from the setting of MSG_SEPARATOR.
- + * If you don't know what any of this means, leave it alone.
- + */
- + /* #define MSG_SEPARATOR "From " /**/
- + #ifdef MMDF
- + /*
- + * These values should be identical (respectively) to the contents of
- + * delim1 and delim2 in MMDFSRC/conf/yoursite/conf.c (sans newline).
- + */
- + #define MSG_SEPARATOR "\001\001\001\001\n"
- + #define END_MSG_SEP "\001\001\001\001\n"
- + /*
- + * You only need to define LCKDFLDIR if you have MMDF configured to use the
- + * locking routines in lib/util/lk_lock.c (ie., link(2)-based locking).
- + * Most of you WILL NOT need this, since you probably use one of the more
- + * sophisticated locking modules provided with MMDF. Remember to alter the
- + * Makefile so as to access the MMDF library at the link step.
- + */
- + /* #define LCKDFLDIR "/usr/spool/mmdf/lockfiles" /* (for example) */
- + #else /* !MMDF */
- + #ifdef M_XENIX
- + #define DOT_LOCK /* DOT_LOCK should be used for SCO Xenix */
- + #endif /* M_XENIX */
- + #endif /* MMDF */
- +
- + #ifdef HOMEMAIL
- + #define MAILFILE ".mailbox" /* or whatever */
- + #else /* HOMEMAIL */
- + #ifndef MAILDIR
- + #if defined(SYSV) && !defined(SVR4)
- + #define MAILDIR "/usr/mail"
- + #else /* BSD || SVR4 */
- + #define MAILDIR "/usr/spool/mail"
- + #endif /* SYSV && !SVR4 */
- + #endif /* MAILDIR */
- + #endif /* HOMEMAIL */
- +
- + /* If your mailer does not understand commas between addresses, you should
- + * define NO_COMMAS. This includes pre-3.0 smail and default MTAs used on
- + * xenix, and sys-v systems.
- + * This does NOT apply to MMDF or sendmail, in most cases. SunOS 4.1 as
- + * shipped needs this, but note that if you are allowing mush to default
- + * to SUN_4_1 (see the end of this file) you won't get this.
- + */
- + #ifdef SUN_4_1 /* SunOS 4.1 has warped sendmail.cf */
- + #define NO_COMMAS /**/
- + #endif /* SUN_4_1 */
- +
- + /*
- + * Most RFC822-compliant mailers (sendmail) will add the headers From:
- + * and Date: on outgoing mail. If the user or UA sends these headers,
- + * such MTAs will generally use the headers as the user or UA set them.
- + * Mailers that are not RFC822-compliant sometimes fail to add these
- + * headers at all, so the UA must supply them. Mush normally does so.
- + *
- + * However, there are certain MTAs which will insist on adding new From:
- + * and Date: headers. These "picky mailers" may remove the user or UA
- + * From: and Date: headers, or they may leave them but insert a leading
- + * '>', which makes the headers very ugly and redundant or contradictory.
- + * PICKY_MAILER prevents mush from adding From: or Date:, so the MTA can.
- + *
- + * Many RFC822-compliant mailers are "picky", including certain sendmail
- + * configurations. It is advisable to set PICKY_MAILER *UNLESS* your MTA
- + * is known not to be RFC822 compiant (xenix, older sys-v) or can be
- + * counted on to pass through user-defined headers without modification.
- + */
- + /* #define PICKY_MAILER /**/
- +
- + /* If your system supports the vprintf() functions, True for sys-v and
- + * later sun versions (3.0+ ?). Typically not true for BSD systems, but
- + * that will probably change in the future.
- + */
- + #if defined(__linux__) || defined(SYSV) || defined(sun)
- + #define VPRINTF
- + #endif /* __linux__ || SYSV || sun */
- +
- + /* If your system uses the getwd() system call (as opposed to getcwd()),
- + * and your system is not a BSD system (e.g. MIPS), define GETWD below.
- + */
- + /* #define GETWD /**/
- +
- + /* If your system has the BSD-style directory routines (opendir/readdir),
- + * define DIRECTORY. This happens automatically in glob.h for BSD.
- + */
- + #if defined(SVR4) || defined(__linux__)
- + #define DIRECTORY
- + #endif /* SVR4 || __linux__ */
- +
- + /* If your system has the POSIX "utimbuf" structure for utime(2),
- + * define POSIX_UTIME. You may have to change <sys/utime.h> to <utime.h>
- + * in mush.h.
- + */
- + #if defined(__linux__) || (defined(SVR4) && !defined(sun))
- + #define POSIX_UTIME
- + #endif /* __linux__ || (SVR4 && !sun) */
- +
- + /* The remainder of this file attempt to automatically supply some sanity.
- + * You shouldn't need to change this part unless your system is really odd.
- + */
- +
- + #ifdef BSD
- + # undef SYSV /* Sorry, can't do both BSD and SYSV */
- + # undef SVR4
- + # undef SVR3
- + # undef SVR2
- + #endif /* BSD */
- + #if defined(SUNTOOL) || defined(SUN_3_5) || defined(SUN_4_0) || defined(SUN_4_1)
- + #if !defined(BSD) && !defined(SYSV)
- + # define BSD /* default to BSD */
- + #endif /* !BSD && !SYSV */
- + #if !defined(SUN_3_5) && !defined(SUN_4_0)
- + # ifndef SUN_4_1
- + # define SUN_4_1 /* default to sun 4.1 */
- + # endif /* SUN_4_1 */
- + # define SUN_4_0 /* 4.0 stuff needed too */
- + #endif /* !SUN_3_5 && !SUN_4_0 */
- + #ifdef SUN_4_0
- + # undef SUN_3_5
- + # undef SIGRET
- + # define SIGRET void
- + #endif /* SUN_4_0 */
- + #endif /* SUNTOOL || SUN_3_5 || SUN_4_0 || SUN_4_1 */
- + #ifdef SVR4
- + # undef SVR3
- + # undef SYSV
- + # define SYSV
- + #else
- + #ifdef SYSV
- + # undef SVR3
- + # ifndef SVR2
- + # define SVR3
- + # endif /* SVR2 */
- + #endif /* SYSV */
- + #endif /* SVR4 */
- + #ifdef SVR3
- + # undef SYSV
- + # define SYSV
- + #endif /* SVR3 */
- diff -rc --new-file orig/mush-7.2.5/config.h-svr4 mush-7.2.5/config.h-svr4
- *** orig/mush-7.2.5/config.h-svr4 Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/config.h-svr4 Sat Sep 11 20:36:53 1993
- ***************
- *** 0 ****
- --- 1,176 ----
- + /* config.h 1.1 (c) copyright 1986 (Dan Heller) */
- +
- + /* Default names and locations for files */
- + #define MAILRC ".mushrc"
- + #define ALTERNATE_RC ".mailrc"
- + #define DEFAULT_RC "/usr/local/lib/Mushrc"
- + #define ALT_DEF_RC "/usr/local/lib/Mail.rc"
- + #define SIGNATURE ".signature"
- + #define FORTUNE "/usr/local/games/fortune"
- + #define COMMAND_HELP "/usr/local/lib/cmd_help"
- + #ifdef SUNTOOL
- + # define TOOL_HELP "/usr/local/lib/tool_help"
- + #endif /* SUNTOOL */
- + #define ALTERNATE_HOME "/tmp" /* Path must be read/write to EVERYONE */
- + #define EDFILE ".edXXXXXX" /* file/pathname added to user's "home" */
- +
- + #define LS_COMMAND "ls"
- + #define LPR "lp"
- + #define DEF_PRINTER "lp"
- + /* If your lpr command understands only -P or -d (or some other flag) then
- + * define PRINTER_OPT to the appropriate value. If you want to be able to
- + * use either one, don't define this at all. The defaults (when neither
- + * -P nor -d is used on the mush "lpr" command line) are as noted here.
- + * If your lpr requires that the option and the printer name be separate
- + * arguments, include a trailing space in this definition.
- + */
- + #ifdef SYSV
- + #define PRINTER_OPT "-d"
- + #endif /* SYSV */
- + #ifdef BSD
- + #define PRINTER_OPT "-P"
- + #endif /* BSD */
- +
- + /* default settings for some variable strings */
- + #define DEF_PROMPT "%m/%t: "
- + #define DEF_PAGER "internal" /* set to "internal" to use internal pager */
- + #define DEF_SHELL "$SHELL"
- + #define DEF_EDITOR "$EDITOR"
- + #define DEF_FOLDER "~/Mail" /* default Mail folder */
- + #define DEF_MBOX "~/mbox" /* default mbox */
- + #define DEF_INDENT_STR " " /* indent included mail */
- + #define DEF_ESCAPE "~"
- + #define DEF_HDR_FMT "%16n %13d %-4l %34s" /* default hdr_format */
- + #define DEF_CURSES_HELP \
- + "display save mail reply next-msg back-msg screen-next screen-back"
- +
- + /* Headers that will NOT be included when forwarding mail */
- + #define IGNORE_ON_FWD "status,priority,return-receipt-to"
- +
- + #define MAXMSGS 1000 /* Maximum number of messages we can read */
- + #define HDRSIZ (2*BUFSIZ) /* This should not be < BUFSIZ! */
- +
- + /*
- + * Define INTERNAL_MALLOC and recompile if you have trouble with mush
- + * core-dumping due to malloc/free errors. Also, if you run a System 5
- + * variant, you might notice a performance improvement if you define this
- + * variable. It uses the malloc distributed by Larry Wall for perl v2.
- + */
- + /* #define INTERNAL_MALLOC /**/
- +
- + /*
- + * Define TIMEZONE if your system has neither the SysV external variable
- + * tzname nor the BSD timezone() function. The example below is for
- + * Gould BSD4.3 systems; others should define it as a string, e.g. "PST"
- + * If TIMEZONE is defined, DAYLITETZ can also be defined, e.g. "PDT"
- + *
- + * Define USA if you are using US/NorthAmerican time zone abbreviations.
- + * If USA is not defined, dates in outgoing mail will include timezones
- + * specified as offsets from GMT, e.g. Pacific Standard Time is -0800.
- + */
- + /* #define TIMEZONE T->tm_zone /**/
- + /* #define USA /**/
- +
- + /* mail delivery system macros and defines... */
- +
- + /*
- + * If you are using MMDF, define MMDF here.
- + */
- + /* #define MMDF /**/
- + #if defined(M_UNIX) && defined(M_XENIX)
- + #define MMDF
- + /* #define M_EXECMAIL /* Define if you haven't fixed submit permissions */
- + #endif /* M_UNIX && M_XENIX */
- + #ifdef MMDF
- + /*
- + * If MMDF delivers mail the user's home directory, define HOMEMAIL.
- + * Also check the definition of the delivery file name MAILFILE, below.
- + */
- + /* #define HOMEMAIL /**/
- + #ifdef M_EXECMAIL
- + #define MAIL_DELIVERY "/usr/lib/mail/execmail"
- + # define VERBOSE_ARG "-v"
- + # define METOO_ARG "-m"
- + #else /* M_EXECMAIL */
- + #define MAIL_DELIVERY "exec /usr/mmdf/bin/submit -mlnr"
- + #define VERBOSE_ARG "Ww"
- + #define MTA_EXIT 9 /* exit status for successful submit */
- + #endif /* M_EXECMAIL */
- + #else /* MMDF */
- + /*
- + * If you are not using MMDF, check these definitions.
- + */
- + #define MAIL_DELIVERY "/usr/lib/sendmail -i" /* "-i" works like "-oi" */
- + #define VERBOSE_ARG "-v" /* undef if none exists */
- + #define METOO_ARG "-m" /* man sendmail for more info. */
- + #define MTA_EXIT 0 /* exit status for successful mail delivery */
- + #endif /* MMDF */
- +
- + /* If your mail transfer agent uses something *besides* "From " to separate
- + * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
- + * If that string is 4 ^A's, then the string would be "\001\001\001\001".
- + * With the exception of MMDF, below, you should OMIT a trailing newline
- + * from the setting of MSG_SEPARATOR.
- + * If you don't know what any of this means, leave it alone.
- + */
- + /* #define MSG_SEPARATOR "From " /**/
- + #ifdef MMDF
- + /*
- + * These values should be identical (respectively) to the contents of
- + * delim1 and delim2 in MMDFSRC/conf/yoursite/conf.c (sans newline).
- + */
- + #define MSG_SEPARATOR "\001\001\001\001\n"
- + #define END_MSG_SEP "\001\001\001\001\n"
- + /*
- + * You only need to define LCKDFLDIR if you have MMDF configured to use the
- + * locking routines in lib/util/lk_lock.c (ie., link(2)-based locking).
- + * Most of you WILL NOT need this, since you probably use one of the more
- + * sophisticated locking modules provided with MMDF. Remember to alter the
- + * Makefile so as to access the MMDF library at the link step.
- + */
- + /* #define LCKDFLDIR "/usr/spool/mmdf/lockfiles" /* (for example) */
- + #else /* !MMDF */
- + #ifdef M_XENIX
- + #define DOT_LOCK /* DOT_LOCK should be used for SCO Xenix */
- + #endif /* M_XENIX */
- + #endif /* MMDF */
- +
- + /* If your mailer does not understand commas between addresses, you should
- + * define NO_COMMAS. This includes pre-3.0 smail and default MTAs used on
- + * xenix, and sys-v systems.
- + * This does NOT apply to MMDF or sendmail, in most cases.
- + */
- + /* #ifdef SUN_4_1 /* SunOS 4.1 has warped sendmail.cf */
- + #define NO_COMMAS /**/
- + /* #endif /* SUN_4_1 */
- +
- + /*
- + * Most RFC822 compliant mailers (sendmail) will add the headers From:
- + * and Date: on outgoing mail. If the user or UA sends these headers,
- + * most MTAs will not append them automatically. However, there are
- + * certain MTAs which will not allow this -- these "picky mailers" will
- + * precede such headers with a '>' and make the headers very ugly and
- + * somewhat redundant or contradictory. It is advisable to set this
- + * *UNLESS* your MTA is not RFC822 compiant -- therefore you should NOT
- + * set this (xenix, sys-v).
- + */
- + /* #define PICKY_MAILER /**/
- +
- + /* If your system supports the vprintf() functions, True for sys-v and
- + * later sun versions (3.0+ ?). Typically not true for BSD systems, but
- + * that will probably change in the future.
- + */
- + #if defined(SYSV) || defined(sun)
- + #define VPRINTF
- + #endif /* SYSV || sun */
- +
- + /* If your system uses the getwd() system call (as opposed to getcwd()),
- + * and your system is not a BSD system (e.g. MIPS), define GETWD below.
- + */
- + /* #define GETWD /**/
- +
- + #ifdef HOMEMAIL
- + #define MAILFILE "Mailbox" /* or whatever */
- + #else /* HOMEMAIL */
- + #define MAILDIR "/usr/spool/mail"
- + #endif /* HOMEMAIL */
- diff -rc --new-file orig/mush-7.2.5/curses.c mush-7.2.5/curses.c
- *** orig/mush-7.2.5/curses.c Fri Oct 30 19:55:31 1992
- --- mush-7.2.5/curses.c Sun Oct 17 15:22:30 1993
- ***************
- *** 487,504 ****
-
- /* order messages (sort) and redisplay the headers */
- when C_SORT : case C_REV_SORT :
- ! (void) strcpy(file, "sort");
- ! if (c == C_REV_SORT) {
- ! print("Reverse "), turnon(glob_flags, CONT_PRNT);
- ! (void) strcat(file, " -");
- ! }
- ! print(
- ! "Order messages by [author, date, length, Status, subject, priority]: "
- ! );
- ! if ((c = m_getchar()) == 'a' || c == 'd' || c == 'l' ||
- ! c == 'S' || c == 's' || c == 'R' || c == 'p') {
- print("reordering messages...");
- ! (void) cmd_line(sprintf(buf, "%s %c", file, c), msg_list);
- print_more("done.");
- if (ison(glob_flags, CNTD_CMD))
- putchar('\n'), puts(compose_hdr(current_msg));
- --- 487,501 ----
-
- /* order messages (sort) and redisplay the headers */
- when C_SORT : case C_REV_SORT :
- ! print((c == C_SORT) ? "Order " : "Reverse order ");
- ! turnon(glob_flags, CONT_PRNT);
- ! print("by [author, date, length, Status, subject, priority, to]: ");
- ! n = m_getchar();
- ! if (index("adlSRspt",n)) {
- print("reordering messages...");
- ! sprintf(buf,"sort %s%c%s",(c == C_SORT) ? "" : "r",n,
- ! (n == 'd' || n == 'l') ? "" : "d");
- ! (void) cmd_line(buf, msg_list);
- print_more("done.");
- if (ison(glob_flags, CNTD_CMD))
- putchar('\n'), puts(compose_hdr(current_msg));
- diff -rc --new-file orig/mush-7.2.5/folders.c mush-7.2.5/folders.c
- *** orig/mush-7.2.5/folders.c Tue Mar 31 23:03:48 1992
- --- mush-7.2.5/folders.c Wed Oct 27 17:14:57 1993
- ***************
- *** 85,91 ****
- */
- n = 0;
- if (*tmp != '/') {
- ! if (!GetCwd(buf, sizeof buf)) {
- error("getcwd: %s",buf);
- return -1;
- }
- --- 85,92 ----
- */
- n = 0;
- if (*tmp != '/') {
- ! buf[0] = '\0';
- ! if (GetCwd(buf, sizeof buf) == NULL) {
- error("getcwd: %s",buf);
- return -1;
- }
- ***************
- *** 132,137 ****
- --- 133,148 ----
- xfree(msg[msg_cnt].m_date_recv);
- xfree(msg[msg_cnt].m_date_sent);
- msg[msg_cnt].m_date_recv = msg[msg_cnt].m_date_sent = NO_STRING;
- + xfree(msg[msg_cnt].m_subject);
- + xfree(msg[msg_cnt].m_target);
- + xfree(msg[msg_cnt].m_source);
- + xfree(msg[msg_cnt].m_from);
- + xfree(msg[msg_cnt].m_name);
- + xfree(msg[msg_cnt].m_addr);
- + msg[msg_cnt].m_subject = NULL;
- + msg[msg_cnt].m_target = msg[msg_cnt].m_source = NULL;
- + msg[msg_cnt].m_from = msg[msg_cnt].m_name = msg[msg_cnt].m_addr = NULL;
- + msg[msg_cnt].m_author = 0;
- }
- msg_cnt = 0, msg[0].m_offset = 0L;
- turnoff(glob_flags, CONT_PRNT);
- ***************
- *** 677,683 ****
- if (fputs(from, fp) == EOF)
- #endif /* MSG_SEPARATOR */
- art_cnt = -1;
- ! if (!(p = header_field(n, "from")))
- p = "Mush-Undigest (Real author unknown)";
- if (fprintf(fp, "From: %s\n", p) == EOF)
- art_cnt = -1;
- --- 688,694 ----
- if (fputs(from, fp) == EOF)
- #endif /* MSG_SEPARATOR */
- art_cnt = -1;
- ! if (!(p = header_field(n, "source")))
- p = "Mush-Undigest (Real author unknown)";
- if (fprintf(fp, "From: %s\n", p) == EOF)
- art_cnt = -1;
- diff -rc --new-file orig/mush-7.2.5/hdrs.c mush-7.2.5/hdrs.c
- *** orig/mush-7.2.5/hdrs.c Fri Oct 30 19:55:32 1992
- --- mush-7.2.5/hdrs.c Wed Oct 27 17:27:46 1993
- ***************
- *** 52,58 ****
- * "buf" and return its address.
- */
- char *
- ! header_field(n, str)
- char *str;
- {
- static char buf[HDRSIZ];
- --- 52,58 ----
- * "buf" and return its address.
- */
- char *
- ! real_header_field(n, str)
- char *str;
- {
- static char buf[HDRSIZ];
- ***************
- *** 88,96 ****
- --- 88,231 ----
- }
- if (b > buf && *--b == ',')
- *b = 0;
- +
- return (*buf)? buf: NULL;
- }
-
- + /*
- + * To speed up sorting at the expense of some space we cache here
- + * the subject and the to/newsgroups and reply-to/from fields.
- + */
- +
- + #define Strncpy(buf,p) (void)(strncpy(buf,p,sizeof(buf)),buf[sizeof(buf)-1]=0)
- +
- + unsigned
- + author_of(n, from, name, addr, isauthor, show_to, to)
- + char from[HDRSIZ], name[HDRSIZ], addr[HDRSIZ], to[HDRSIZ];
- + unsigned *isauthor;
- + {
- + register char *p, *p2;
- +
- + from[0] = name[0] = addr[0] = '\0';
- +
- + /* who's the message from */
- +
- + if ((p = reply_to(n, 0, from))) {
- + /* NOTE: this fails if the sender has '<' or '!' in
- + * the RFC822 comment fields -- leading "comment"
- + * or trailing (comment) -- but that isn't critical
- + */
- + if ((p2 = rindex(p, '!')) || (p2 = index(p, '<')))
- + p = p2 + 1;
- + } else
- + p = strcpy(from, "unknown"); /* just in case */
- +
- + /* If the From field contains the user's login name, then the message
- + * could be from the user -- attempt to give more useful information
- + * by telling to whom the message was sent. This is not possible if
- + * the "to" header failed to get info (which is probably impossible).
- + * Use take_me_off() to be sure the message really is from the current
- + * user and not just someone with the same login at another site.
- + */
- + if (show_to /* && !strncmp(p, login, strlen(login)) */)
- + (void) take_me_off(from);
- + if (show_to && (*isauthor = !*from) && to) { /* assign and test */
- + (void) get_name_n_addr(to, name+4, addr+4);
- + if (addr[4])
- + (void) strncpy(addr, "TO: ", 4);
- + if (name[4]) { /* check to see if a name got added */
- + (void) strncpy(name, "TO: ", 4);
- + Strncpy(from, name);
- + } else
- + Strncpy(from, addr);
- + } else
- + (void) get_name_n_addr(from, name, addr);
- +
- + if (from[0] && msg[n].m_from == NULL) msg[n].m_from = savestr(from);
- + if (addr[0] && msg[n].m_addr == NULL) msg[n].m_addr = savestr(addr);
- + if (name[0] && msg[n].m_name == NULL) msg[n].m_name = savestr(name);
- +
- + msg[n].m_author = 1;
- +
- + return (from[0] || addr[0] || name[0]);
- + }
- +
- + char *
- + author_to(n, str)
- + char *str;
- + {
- + register char *p;
- +
- + if (!msg[n].m_author) {
- + char from[HDRSIZ], name[HDRSIZ], addr[HDRSIZ];
- + author_of(n,from,name,addr,(unsigned *) 0,0,(char *) 0);
- + }
- +
- + if ((p = msg[n].m_addr) != NULL) {
- + Debug("author_to: msg %d: cached addr %s\n", n, p);
- + strcpy(str,p);
- + return str;
- + }
- +
- + if ((p = msg[n].m_name) != NULL) {
- + Debug("author_to: msg %d: cached name %s\n", n, p);
- + strcpy(str,p);
- + return str;
- + }
- +
- + if ((p = msg[n].m_from) != NULL) {
- + Debug("author_to: msg %d: cached from %s\n", n, p);
- + strcpy(str,p);
- + return str;
- + }
- +
- + return NULL;
- + }
- +
- + char *
- + header_field(n, str)
- + char *str;
- + {
- + register char *p,*q;
- +
- + #if 0 /* not used anywhere */
- + if (!strcmp(str,"author")) {
- + (p = author_to(n,str));
- + if (p == NULL) return NULL;
- + }
- + else
- + #endif
- + if (!strcmp(str,"subject")) {
- + (p = q = msg[n].m_subject)
- + || (p = real_header_field(n,"subject"));
- + if (p == NULL) return NULL;
- + if (q == NULL) msg[n].m_subject = savestr(p);
- + }
- + else if (!strcmp(str,"source")) {
- + (p = q = msg[n].m_source)
- + || (p = real_header_field(n,"from"))
- + || (p = real_header_field(n,"reply-to"))
- + || (p = real_header_field(n,"sender"))
- + || (p = real_header_field(n,"apparently-from"))
- + || (p = real_header_field(n,"resent-from"));
- + if (p == NULL) return NULL;
- + if (q == NULL) msg[n].m_source = savestr(p);
- + }
- + else if (!strcmp(str,"target")) {
- + (p = q = msg[n].m_target)
- + || (p = real_header_field(n,"to"))
- + || (p = real_header_field(n,"newsgroups"))
- + || (p = real_header_field(n,"resent-to"))
- + || (p = real_header_field(n,"apparently-to"));
- + if (p == NULL) return NULL;
- + if (q == NULL) msg[n].m_target = savestr(p);
- + }
- + else
- + p = real_header_field(n,str);
- +
- + return p;
- + }
- +
- do_hdrs(argc, argv, list)
- register char **argv, list[];
- {
- ***************
- *** 333,340 ****
- return 0;
- }
-
- - #define Strncpy(buf,p) (void)(strncpy(buf,p,sizeof(buf)),buf[sizeof(buf)-1]=0)
- -
- /*
- * format a header from the information about a message (from, to, date,
- * subject, etc..). The header for message number "cnt" is built and is
- --- 468,473 ----
- ***************
- *** 389,430 ****
- user[0] = name[0] = Day[0] = Mon[0] = Tm[0] = Yr[0] = Wkday[0] = 0;
-
- /* who's the message to */
- ! if ((p = header_field(cnt, "resent-to")) ||
- ! (p = header_field(cnt, "to")) ||
- ! (p = header_field(cnt, "apparently-to")))
- Strncpy(to, p);
-
- ! /* who's the message from */
- ! if ((p = header_field(cnt, "from")) && strcpy(from, p)
- ! || (p = reply_to(cnt, 0, from))) {
- ! /* NOTE: this fails if the sender has '<' or '!' in
- ! * the RFC822 comment fields -- leading "comment"
- ! * or trailing (comment) -- but that isn't critical
- ! */
- ! if ((p2 = rindex(p, '!')) || (p2 = index(p, '<')))
- ! p = p2 + 1;
- ! } else
- ! p = strcpy(from, "unknown"); /* just in case */
- ! /* If the From field contains the user's login name, then the message
- ! * could be from the user -- attempt to give more useful information
- ! * by telling to whom the message was sent. This is not possible if
- ! * the "to" header failed to get info (which is probably impossible).
- ! * Use take_me_off() to be sure the message really is from the current
- ! * user and not just someone with the same login at another site.
- ! */
- ! if (show_to && !strncmp(p, login, strlen(login)))
- ! (void) take_me_off(from);
- ! if (show_to && (isauthor = !*from)) { /* assign and test */
- ! (void) get_name_n_addr(to, name+4, addr+4);
- ! if (addr[4])
- ! (void) strncpy(addr, "TO: ", 4);
- ! if (name[4]) { /* check to see if a name got added */
- ! (void) strncpy(name, "TO: ", 4);
- ! Strncpy(from, name);
- ! } else
- ! Strncpy(from, addr);
- ! } else
- ! (void) get_name_n_addr(from, name, addr);
-
- if (ison(glob_flags, DATE_RECV))
- date_p = msg[cnt].m_date_recv;
- --- 522,531 ----
- user[0] = name[0] = Day[0] = Mon[0] = Tm[0] = Yr[0] = Wkday[0] = 0;
-
- /* who's the message to */
- ! if ((p = header_field(cnt, "target")))
- Strncpy(to, p);
-
- ! author_of(cnt, from, name, addr, &isauthor, show_to, to);
-
- if (ison(glob_flags, DATE_RECV))
- date_p = msg[cnt].m_date_recv;
- ***************
- *** 518,524 ****
- when 's': p2 = subject;
- when 'l': p2 = sprintf(lines, "%d", msg[cnt].m_lines);
- when 'c': p2 = sprintf(lines, "%ld", msg[cnt].m_size);
- ! when 'i': (p2 = header_field(cnt, "message-id")) || (p2 = "");
- /* date formatting chars */
- when 'd': p2 = date; /* the full date */
- when 'T': p2 = Tm;
- --- 619,625 ----
- when 's': p2 = subject;
- when 'l': p2 = sprintf(lines, "%d", msg[cnt].m_lines);
- when 'c': p2 = sprintf(lines, "%ld", msg[cnt].m_size);
- ! when 'i': (p2 = real_header_field(cnt, "message-id")) || (p2 = "");
- /* date formatting chars */
- when 'd': p2 = date; /* the full date */
- when 'T': p2 = Tm;
- ***************
- *** 643,651 ****
- if (!p)
- print("Warning: message contains no `reply_to_hdr' headers.\n");
- }
- ! if (p || (!p && ((p = header_field(n, field = "reply-to")) ||
- ! (p = header_field(n, field = "from")) ||
- ! (p = header_field(n, field = "return-path"))))) {
- skipspaces(0);
- } else if (!p) {
- DoFrom:
- --- 744,752 ----
- if (!p)
- print("Warning: message contains no `reply_to_hdr' headers.\n");
- }
- ! if (p || (!p && ((p = real_header_field(n, field = "reply-to")) ||
- ! (p = real_header_field(n, field = "from")) ||
- ! (p = real_header_field(n, field = "return-path"))))) {
- skipspaces(0);
- } else if (!p) {
- DoFrom:
- ***************
- *** 694,706 ****
- */
- BrokenFrom:
- if (!lcase_strncmp(field, "from_", -1) &&
- ! (p = header_field(n, "resent-from")) ||
- ! (p = header_field(n, "from")) ||
- ! (p = header_field(n, "sender"))) {
- /* p2 is either NULL or addr (BrokenFrom) */
- (void) get_name_n_addr(p, name, p2);
- }
- ! if (!name[0] && (p = header_field(n, "name")))
- (void) strcpy(name, p);
- if (name[0]) {
- if ((p = any(name, "(<,\"")) && (*p == ',' || *p == '<'))
- --- 795,807 ----
- */
- BrokenFrom:
- if (!lcase_strncmp(field, "from_", -1) &&
- ! (p = real_header_field(n, "resent-from")) ||
- ! (p = real_header_field(n, "from")) ||
- ! (p = real_header_field(n, "sender"))) {
- /* p2 is either NULL or addr (BrokenFrom) */
- (void) get_name_n_addr(p, name, p2);
- }
- ! if (!name[0] && (p = real_header_field(n, "name")))
- (void) strcpy(name, p);
- if (name[0]) {
- if ((p = any(name, "(<,\"")) && (*p == ',' || *p == '<'))
- ***************
- *** 726,751 ****
- * The assumption that HDRSIZ is correct is unwise, but I know it
- * to be true for Mush. Be forewarned if you call this routine.
- */
- ! if (lim > 0 && (p = header_field(n, "resent-to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- ! if (lim > 0 && (p = header_field(n, "to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- ! if (lim > 0 && (p = header_field(n, "apparently-to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- /* Also append the Resent-From address if there is one. */
- ! if (lim > 0 && (p = header_field(n, "resent-from")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- (void) strcpy(b, p);
- --- 827,852 ----
- * The assumption that HDRSIZ is correct is unwise, but I know it
- * to be true for Mush. Be forewarned if you call this routine.
- */
- ! if (lim > 0 && (p = real_header_field(n, "resent-to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- ! if (lim > 0 && (p = real_header_field(n, "to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- ! if (lim > 0 && (p = real_header_field(n, "apparently-to")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- b += Strcpy(b, p);
- lim = HDRSIZ - (b - buf) - 2;
- }
- /* Also append the Resent-From address if there is one. */
- ! if (lim > 0 && (p = real_header_field(n, "resent-from")) && *p) {
- *b++ = ',', *b++ = ' ';
- p[lim] = '\0'; /* prevent overflow */
- (void) strcpy(b, p);
- ***************
- *** 780,786 ****
- {
- register char *p;
- buf[0] = 0; /* make sure it's already null terminated */
- ! if (!(p = header_field(n, "subject")))
- return NULL;
- if (lcase_strncmp(p, "Re:", 3))
- (void) strcpy(buf, "Re: ");
- --- 881,887 ----
- {
- register char *p;
- buf[0] = 0; /* make sure it's already null terminated */
- ! if (!(p = header_field(n,"subject")))
- return NULL;
- if (lcase_strncmp(p, "Re:", 3))
- (void) strcpy(buf, "Re: ");
- ***************
- *** 793,799 ****
- {
- register char *p;
- buf[0] = 0; /* make sure it's already null terminated */
- ! if (!(p = header_field(n, "cc")))
- return NULL;
- fix_up_addr(p);
- if (!do_set(set_options, "metoo"))
- --- 894,900 ----
- {
- register char *p;
- buf[0] = 0; /* make sure it's already null terminated */
- ! if (!(p = real_header_field(n, "cc")))
- return NULL;
- fix_up_addr(p);
- if (!do_set(set_options, "metoo"))
- diff -rc --new-file orig/mush-7.2.5/init.c mush-7.2.5/init.c
- *** orig/mush-7.2.5/init.c Fri Oct 30 19:55:33 1992
- --- mush-7.2.5/init.c Mon Sep 13 10:56:28 1993
- ***************
- *** 19,25 ****
- --- 19,27 ----
- extern char *getlogin();
- char buf[MAXPATHLEN];
- #if defined(SYSV) && !defined(HPUX) && !defined(IRIX4)
- + #ifndef __linux__
- extern struct passwd *getpwuid(); /* sys-v forgot this in pwd.h! */
- + #endif
- struct utsname ourhost;
- #else
- char ourhost[128];
- diff -rc --new-file orig/mush-7.2.5/lock.c mush-7.2.5/lock.c
- *** orig/mush-7.2.5/lock.c Fri Oct 30 19:55:34 1992
- --- mush-7.2.5/lock.c Fri Oct 15 12:54:32 1993
- ***************
- *** 14,19 ****
- --- 14,25 ----
- #include <sys/locking.h>
- #endif /* SYSV && !USG */
-
- + #ifdef __linux__
- + #undef USG
- + #undef SYSV
- + #define BSD
- + #endif
- +
- #ifdef DOT_LOCK
-
- #ifndef DOLOCK_PATH
- ***************
- *** 253,258 ****
- --- 259,265 ----
- /*
- * Define some BSD names for the SYSV world
- */
- + #if !defined(LOCK_SH) && !defined(__linux__)
- #ifdef USG
- #define LOCK_SH F_RDLCK
- #define LOCK_EX F_WRLCK
- ***************
- *** 263,268 ****
- --- 270,276 ----
- #define LOCK_UN LK_UNLCK
- #endif /* USG */
- #define LOCK_NB 0 /* Always non-blocking in this case */
- + #endif /* !LOCK_SH && !__linux__ */
-
- #ifdef EWOULDBLOCK
- #undef EWOULDBLOCK
- diff -rc --new-file orig/mush-7.2.5/mail.c mush-7.2.5/mail.c
- *** orig/mush-7.2.5/mail.c Fri Oct 30 19:55:36 1992
- --- mush-7.2.5/mail.c Wed Oct 27 18:10:47 1993
- ***************
- *** 1076,1089 ****
-
- tmpf = ed_fp;
- msg[msg_cnt].m_offset = 0L;
- ! if (p = header_field(msg_cnt, "to")) {
- (void) strcpy(To, p);
- Cc[0] = Bcc[0] = 0;
- ! if (p = header_field(msg_cnt, "cc"))
- (void) strcpy(Cc, p);
- ! if (p = header_field(msg_cnt, "bcc"))
- (void) strcpy(Bcc, p);
- ! if (p = header_field(msg_cnt, "fcc"))
- next_file += find_files(p, names+next_file, size-next_file, 1);
- } else
- *To = 0; /* Error caught below */
- --- 1076,1089 ----
-
- tmpf = ed_fp;
- msg[msg_cnt].m_offset = 0L;
- ! if (p = real_header_field(msg_cnt, "to")) {
- (void) strcpy(To, p);
- Cc[0] = Bcc[0] = 0;
- ! if (p = real_header_field(msg_cnt, "cc"))
- (void) strcpy(Cc, p);
- ! if (p = real_header_field(msg_cnt, "bcc"))
- (void) strcpy(Bcc, p);
- ! if (p = real_header_field(msg_cnt, "fcc"))
- next_file += find_files(p, names+next_file, size-next_file, 1);
- } else
- *To = 0; /* Error caught below */
- diff -rc --new-file orig/mush-7.2.5/main.c mush-7.2.5/main.c
- *** orig/mush-7.2.5/main.c Fri Oct 30 19:55:37 1992
- --- mush-7.2.5/main.c Mon Sep 13 11:44:19 1993
- ***************
- *** 333,338 ****
- --- 333,339 ----
- {
- char cwd[MAXPATHLEN];
-
- + cwd[0] = '\0';
- if (GetCwd(cwd, MAXPATHLEN) == NULL) {
- error("set_cwd: %s", cwd);
- (void) un_set(&set_options, "cwd");
- diff -rc --new-file orig/mush-7.2.5/makefile.linux mush-7.2.5/makefile.linux
- *** orig/mush-7.2.5/makefile.linux Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/makefile.linux Sun Oct 17 18:34:50 1993
- ***************
- *** 0 ****
- --- 1,70 ----
- + # makefile.linux (c) copyright 1991 (Dan Heller)
- + #
- + HDRS= mush.h config.h-dist strings.h bindings.h options.h version.h glob.h pop.h
- +
- + SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c print.c dates.c \
- + signals.c setopts.c msgs.c pick.c sort.c expr.c folders.c \
- + loop.c viewopts.c curses.c curs_io.c bind.c file.c strings.c \
- + lock.c macros.c options.c addrs.c malloc.c glob.c command2.c \
- + pop.c pmush.c xcreat.c
- + OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
- + signals.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
- + folders.o dates.o loop.o viewopts.o curses.o curs_io.o bind.o \
- + lock.o macros.o options.o addrs.o malloc.o glob.o command2.o \
- + pop.o pmush.o xcreat.o
- +
- + HELP_FILES= README README-7.0 README-7.1 README-7.2.0 README-7.2.2 \
- + README-7.2.4 mush.1 cmd_help Mushrc Mailrc Gnurc \
- + sample.mushrc advanced.mushrc digestify
- +
- + MAKES= makefile.bsd makefile.xenix makefile.sys.v makefile.hpux makefile.sun
- +
- + # See the README for changes needed to compile under Ultrix.
- + # In particular, you may need -DSIGRET=void and/or -ltermcap.
- + CFLAGS= -g -fwritable-strings -DSYSV -DUSG -DCURSES -DSIGRET=void
- + LDFLAGS= -g -static
- + LINTFLAGS= -bxah -Dlint -DCURSES -DBSD -D_BSD_SOURCE
- + LIBS= -lcurses -ltermcap
- + OTHERLIBS=
- + # Use some variant of this one if you #define MMDF in config.h
- + #OTHERLIBS=/usr/src/mmdf/lib/libmmdf.a
- +
- + mush: $(OBJS)
- + @echo loading...
- + @cc $(LDFLAGS) $(OBJS) $(LIBS) $(OTHERLIBS) -o mush
- +
- + $(OBJS): config.h mush.h
- + loop.o: version.h
- +
- + tape:
- + @tar cv $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- +
- + tar:
- + @tar fcv MUSH $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- +
- + tarmail:
- + tar fcv - $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES) | \
- + compress | btoa > mush.tarmail
- +
- + lint:
- + lint $(LINTFLAGS) $(SRCS)
- +
- + clean:
- + rm -f *.o core mush
- +
- + BINDIR= /usr/bin
- + LIBDIR= /usr/lib
- + MRCDIR= /usr/lib
- + MANDIR= /usr/man/man1
- + MANEXT= 1
- +
- + install: mush
- + mv mush $(BINDIR)
- + strip $(BINDIR)/mush
- + chmod 0755 $(BINDIR)/mush
- + cp mush.1 $(MANDIR)/mush.$(MANEXT)
- + chmod 0644 $(MANDIR)/mush.$(MANEXT)
- + cp cmd_help $(LIBDIR)
- + chmod 0644 $(LIBDIR)/cmd_help
- + cp Mushrc $(MRCDIR)/Mushrc
- + chmod 0644 $(MRCDIR)/Mushrc
- diff -rc --new-file orig/mush-7.2.5/makefile.svr4 mush-7.2.5/makefile.svr4
- *** orig/mush-7.2.5/makefile.svr4 Thu Jan 1 01:00:00 1970
- --- mush-7.2.5/makefile.svr4 Sat Sep 11 20:36:54 1993
- ***************
- *** 0 ****
- --- 1,62 ----
- + # Mush makefile for system V.4. Note: SIGRET should return void for normal
- + # sys-v, but Att PC users should *not* have it defined. See the README!!
- + #
- + HDRS1= mush.h config.h
- + HDRS2= strings.h options.h
- + HDRS3= bindings.h glob.h
- + HDRS4= version.h
- + SRCS1= commands.c dates.c execute.c expr.c folders.c \
- + hdrs.c init.c loop.c mail.c main.c misc.c msgs.c pick.c \
- + print.c setopts.c signals.c sort.c viewopts.c options.c lock.c
- + SRCS2= bind.c curs_io.c curses.c file.c strings.c macros.c \
- + addrs.c malloc.c glob.c command2.c
- +
- + OBJS1= commands.o dates.o execute.o expr.o folders.o \
- + hdrs.o init.o loop.o mail.o main.o misc.o msgs.o pick.o \
- + print.o setopts.o signals.o sort.o viewopts.o options.o lock.o
- + OBJS2= bind.o curs_io.o curses.o file.o strings.o macros.o \
- + addrs.o malloc.o glob.o command2.o
- +
- + HELP= README README-7.0 README-7.1 README-7.2.0 README-7.2.2 mush.1 \
- + cmd_help Mushrc Mailrc Gnurc sample.mushrc advanced.mushrc digestify
- +
- + # Sun OS systems who wish to compile with sys-v options:
- + # CC= /usr/5bin/cc
- + # CFLAGS= -O -DSYSV -DCURSES -DUSG -DDIRECTORY
- + # LIBS= -L/usr/5lib -lcurses
- +
- + # IRIX 3.2 systems (SGI Iris workstations) should add -DDIRECTORY to CFLAGS
- + # SCO UNIX 3.2 should add -DDIRECTORY -DSELECT and should avoid library -lx
- +
- + CFLAGS= -O -DSYSV -DUSG -DDIRECTORY -DSELECT -DCURSES -DREGCMP -DSIGRET=void
- + LDFLAGS=
- + LIBS= -lcurses -lsocket -lnsl -lgen $$LDPATH -lmalloc
- + OTHERLIBS=
- + # Use some variant of this one if you #define MMDF in config.h
- + #OTHERLIBS=/usr/src/mmdf/lib/libmmdf.a
- + PROG= mush
- +
- + $(PROG): $(OBJS1) $(OBJS2)
- + @echo loading...
- + @$(CC) $(LDFLAGS) $(OBJS1) $(OBJS2) -o $(PROG) $(LIBS) $(OTHERLIBS)
- +
- + $(OBJS1): $(HDRS1) $(HDRS2)
- + $(OBJS2): $(HDRS1) $(HDRS2) $(HDRS3)
- + loop.o: version.h
- +
- + BINDIR= /usr/local/bin
- + LIBDIR= /usr/local/lib
- + MRCDIR= /usr/local/lib
- + MANDIR= /usr/local/man/man1
- + MANEXT= 1
- +
- + install: mush
- + cp mush $(BINDIR)
- + strip $(BINDIR)/mush
- + chmod 0755 $(BINDIR)/mush
- + cp mush.1 $(MANDIR)/mush.$(MANEXT)
- + chmod 0644 $(MANDIR)/mush.$(MANEXT)
- + cp cmd_help $(LIBDIR)
- + chmod 0644 $(LIBDIR)/cmd_help
- + cp Mushrc $(MRCDIR)/Mushrc
- + chmod 0644 $(MRCDIR)/Mushrc
- diff -rc --new-file orig/mush-7.2.5/msgs.c mush-7.2.5/msgs.c
- *** orig/mush-7.2.5/msgs.c Fri Oct 30 19:55:39 1992
- --- mush-7.2.5/msgs.c Fri Oct 15 12:43:53 1993
- ***************
- *** 171,177 ****
- }
-
- if (ison(flags, UPDATE_STATUS))
- ! if (!strncmp(line, "Status:", 7) || !strncmp(line, "Priority:", 9))
- continue; /* ignore "Status" and "Priority" lines */
- else if (!on_hdr) {
- int i, write_priority = 0;
- --- 171,177 ----
- }
-
- if (ison(flags, UPDATE_STATUS))
- ! if (!lcase_strncmp(line, "Status:", 7) || !lcase_strncmp(line, "Priority:", 9))
- continue; /* ignore "Status" and "Priority" lines */
- else if (!on_hdr) {
- int i, write_priority = 0;
- ***************
- *** 516,522 ****
- --- 516,524 ----
- struct utimbuf times[1];
- (void) fflush(mail_fp); /* just in case */
- times[0].modtime = time(×[0].actime) - 2;
- + #ifndef __linux__
- times[0].ausec = times[0].modusec = 0;
- + #endif /* !__linux__ */
- #else /* !POSIX_UTIME */
- long times[2];
- (void) fflush(mail_fp); /* just in case */
- ***************
- *** 744,757 ****
-
- path[0] = '\0';
- while (fgets(buf, sizeof buf, fp)) {
- ! if (strncmp(buf, ">From ", 6))
- break;
- p = buf + 6;
-
- (void) sscanf(p, "%s", user);
-
- while (p = index(p+1, 'r')) {
- ! if (!strncmp(p, "remote from ", 12)) {
- char *p2 = path+strlen(path);
- skipspaces(12);
- (void) sscanf(p, "%s", p2); /* add the new machine to current path */
- --- 746,759 ----
-
- path[0] = '\0';
- while (fgets(buf, sizeof buf, fp)) {
- ! if (lcase_strncmp(buf, ">From ", 6))
- break;
- p = buf + 6;
-
- (void) sscanf(p, "%s", user);
-
- while (p = index(p+1, 'r')) {
- ! if (!lcase_strncmp(p, "remote from ", 12)) {
- char *p2 = path+strlen(path);
- skipspaces(12);
- (void) sscanf(p, "%s", p2); /* add the new machine to current path */
- ***************
- *** 922,935 ****
- strdup(msg[cnt].m_date_recv, p);
- } else
- #endif /* MMDF */
- ! if (!strncmp(buf, "Date:", 5))
- strdup(msg[cnt].m_date_sent, parse_date(p+5));
- else if (!msg[cnt].m_date_sent &&
- ! !strncmp(buf, "Resent-Date:", 12))
- msg[cnt].m_date_sent = savestr(parse_date(p+12));
- ! else if (!strncmp(buf, "Content-Type:", 13))
- turnon(msg[cnt].m_flags, METAMAIL);
- ! else if (!strncmp(buf, "Priority:", 9)) {
- for (p += 9 ; *p != '\n'; p++) {
- if (!isalpha(*p) || upper(*p) > 'A' + MAX_PRIORITY)
- continue;
- --- 924,937 ----
- strdup(msg[cnt].m_date_recv, p);
- } else
- #endif /* MMDF */
- ! if (!lcase_strncmp(buf, "Date:", 5))
- strdup(msg[cnt].m_date_sent, parse_date(p+5));
- else if (!msg[cnt].m_date_sent &&
- ! !lcase_strncmp(buf, "Resent-Date:", 12))
- msg[cnt].m_date_sent = savestr(parse_date(p+12));
- ! else if (!lcase_strncmp(buf, "Content-Type:", 13))
- turnon(msg[cnt].m_flags, METAMAIL);
- ! else if (!lcase_strncmp(buf, "Priority:", 9)) {
- for (p += 9 ; *p != '\n'; p++) {
- if (!isalpha(*p) || upper(*p) > 'A' + MAX_PRIORITY)
- continue;
- ***************
- *** 937,943 ****
- M_PRIORITY(upper(*p) - 'A' + 1));
- }
- } else if (get_status &&
- ! !(get_status = strncmp(p, "Status:", 7))) {
- /* new mail should not have a Status: field! */
- turnon(msg[cnt].m_flags, OLD);
- for (p += 7 ; *p != '\n'; p++) {
- --- 939,945 ----
- M_PRIORITY(upper(*p) - 'A' + 1));
- }
- } else if (get_status &&
- ! !(get_status = lcase_strncmp(p, "Status:", 7))) {
- /* new mail should not have a Status: field! */
- turnon(msg[cnt].m_flags, OLD);
- for (p += 7 ; *p != '\n'; p++) {
- diff -rc --new-file orig/mush-7.2.5/mush.1 mush-7.2.5/mush.1
- *** orig/mush-7.2.5/mush.1 Fri Oct 30 19:55:03 1992
- --- mush-7.2.5/mush.1 Wed Oct 27 18:07:40 1993
- ***************
- *** 3249,3255 ****
- .B home
- variable descriptions for more information.
- .TP
- ! .BR sort " [\-i] [[\-r] \-a | \-d | \-l | \-p | \-R | \-s | \-S]"
- This command sorts messages according to author, date, status or subject
- (with or without considering the \*QRe:\ \*U, in replied messages).
- In addition, the messages can be sorted in reverse order (same arguments).
- --- 3249,3255 ----
- .B home
- variable descriptions for more information.
- .TP
- ! .BR sort " [\-i] [[\-r] \-a \-t | \-d | \-l | \-p | \-R | \-s | \-S]"
- This command sorts messages according to author, date, status or subject
- (with or without considering the \*QRe:\ \*U, in replied messages).
- In addition, the messages can be sorted in reverse order (same arguments).
- ***************
- *** 3261,3266 ****
- --- 3261,3267 ----
- \-i ignore case in alphabetical sorts
- \-r reverse sort order of next option
- \-a sort by author (alphabetical)
- + \-t sort by target (alphabetical)
- \-d sort by date
- \-l sort by length of message
- \-p sort by message priority
- diff -rc --new-file orig/mush-7.2.5/mush.h mush-7.2.5/mush.h
- *** orig/mush-7.2.5/mush.h Fri Oct 30 19:55:40 1992
- --- mush-7.2.5/mush.h Wed Oct 27 17:55:45 1993
- ***************
- *** 2,7 ****
- --- 2,11 ----
-
- #include "config.h"
-
- + #if __STDC__
- + # include <unistd.h>
- + #endif
- +
- #ifdef CURSES
-
- #ifdef USG
- ***************
- *** 31,37 ****
- #else /* CURSES */
- #include <stdio.h>
- #if defined(SYSV) && defined(USG) || defined(AIX)
- ! #include <termio.h>
- #endif /* SYSV && USG */
- #endif /* CURSES */
-
- --- 35,45 ----
- #else /* CURSES */
- #include <stdio.h>
- #if defined(SYSV) && defined(USG) || defined(AIX)
- ! # ifdef __linux__
- ! # include <termios.h>
- ! # else
- ! # include <termio.h>
- ! # endif
- #endif /* SYSV && USG */
- #endif /* CURSES */
-
- ***************
- *** 87,97 ****
- # include <sys/select.h>
- # endif /* M_UNIX */
- # include <fcntl.h>
- # endif /* SYSV */
- #endif /* SUNTOOL */
-
- #ifdef POSIX_UTIME
- ! #include <sys/utime.h>
- #endif /* POSIX_UTIME */
- #include <sys/stat.h>
- #include <sys/file.h>
- --- 95,112 ----
- # include <sys/select.h>
- # endif /* M_UNIX */
- # include <fcntl.h>
- + # ifndef __linux__
- + # undef TIOCGLTC
- + # endif
- # endif /* SYSV */
- #endif /* SUNTOOL */
-
- #ifdef POSIX_UTIME
- ! # ifdef __linux__
- ! # include <utime.h>
- ! # else
- ! # include <sys/utime.h>
- ! # endif
- #endif /* POSIX_UTIME */
- #include <sys/stat.h>
- #include <sys/file.h>
- ***************
- *** 173,182 ****
- #endif /* nocrmode */
-
- unsigned char vmin, vtime;
- ! #define sg_erase c_cc[2]
- #define sg_flags c_lflag
- ! #define sg_kill c_cc[3]
- #define sg_ospeed c_cflag
- #define gtty(fd, SGTTYbuf) ioctl(fd, TCGETA, SGTTYbuf)
- #undef stty
- #define stty(fd, SGTTYbuf) ioctl(fd, TCSETAW, SGTTYbuf)
- --- 188,203 ----
- #endif /* nocrmode */
-
- unsigned char vmin, vtime;
- ! #define sg_erase c_cc[VERASE]
- #define sg_flags c_lflag
- ! #define sg_kill c_cc[VKILL]
- #define sg_ospeed c_cflag
- + #ifdef __linux__
- + # undef TCGETA
- + # undef TCSETAW
- + # define TCGETA TCGETS
- + # define TCSETAW TCSETSW
- + #endif
- #define gtty(fd, SGTTYbuf) ioctl(fd, TCGETA, SGTTYbuf)
- #undef stty
- #define stty(fd, SGTTYbuf) ioctl(fd, TCSETAW, SGTTYbuf)
- ***************
- *** 187,200 ****
- #define cbrkoff() \
- (_tty.sg_flags |= ICANON,_tty.c_cc[VMIN] = vmin,_tty.c_iflag |= ICRNL, \
- _tty.c_cc[VTIME] = vtime, stty(0, &_tty))
- ! #define savetty() \
- (void) gtty(0, &_tty), vtime = _tty.c_cc[VTIME], vmin = _tty.c_cc[VMIN]
- ! #define cbreak() cbrkon()
- ! #define nocbreak() cbrkoff()
-
- /* If curses isn't defined, declare our 'tty' and macros for echo/cbreak */
- #ifndef CURSES
- ! typedef struct termio SGTTY;
- #define echom() echon()
- #define noechom() echoff()
- #define crmode() cbrkon()
- --- 208,238 ----
- #define cbrkoff() \
- (_tty.sg_flags |= ICANON,_tty.c_cc[VMIN] = vmin,_tty.c_iflag |= ICRNL, \
- _tty.c_cc[VTIME] = vtime, stty(0, &_tty))
- !
- ! #ifdef __linux__
- ! # undef savetty
- ! # undef cbreak
- ! # undef nocbreak
- ! #endif
- !
- ! #ifndef savetty
- ! # define savetty() \
- (void) gtty(0, &_tty), vtime = _tty.c_cc[VTIME], vmin = _tty.c_cc[VMIN]
- ! #endif
- ! #ifndef cbreak
- ! # define cbreak() cbrkon()
- ! #endif
- ! #ifndef nocbreak
- ! # define nocbreak() cbrkoff()
- ! #endif
-
- /* If curses isn't defined, declare our 'tty' and macros for echo/cbreak */
- #ifndef CURSES
- ! #ifdef __linux__
- ! typedef struct termios SGTTY;
- ! #else
- ! typedef struct termio SGTTY;
- ! #endif
- #define echom() echon()
- #define noechom() echoff()
- #define crmode() cbrkon()
- ***************
- *** 403,408 ****
- --- 441,448 ----
- #define HELP_TEXT ULBIT(25) /* create textsw frame for paging help messages */
- #define CORRUPTED ULBIT(26) /* error loading new mail has occurred */
-
- + #define DONT_CHECK (DO_SHELL|IS_PIPE|IGN_SIGS|IS_GETTING|READ_ONLY|REDIRECT|CNTD_CMD|IS_SENDING|IN_MACRO)
- +
- /* flags to control composition */
- #define VERBOSE ULBIT(0) /* verbose flag for sendmail */
- #define INCLUDE ULBIT(1) /* include msg in response */
- ***************
- *** 446,451 ****
- --- 486,498 ----
- int m_lines; /* number of lines in msg */
- char *m_date_recv;/* Date user received msg (see dates.c for fmt) */
- char *m_date_sent;/* Date author sent msg (see dates.c for fmt) */
- + char *m_source; /* Cached From: or Reply-To: field */
- + char *m_target; /* Cached To: or Newsgroups: field */
- + char *m_subject; /* Cached Subject: field */
- + char *m_from; /* Cached Reply-To: or From: field */
- + char *m_addr; /* Cached Reply-To: or From: field */
- + char *m_name; /* Cached Reply-To: or From: field */
- + char m_author; /* if any of the 3 preceding ones has been inited */
- } msg[MAXMSGS];
-
- struct options {
- ***************
- *** 526,532 ****
- *cc_to(), /* when responding, return str which is the cc-list */
- *compose_hdr(), /* passes hdr_format to format_hdr() for displays */
- *format_hdr(), /* returns a formatted line describing passed msg # */
- ! *header_field(), /* the line in msg described by arg (message header) */
- *reply_to(), /* who do we reply to when responding */
- *subject_to(), /* when responding, return str which is the subject */
-
- --- 573,580 ----
- *cc_to(), /* when responding, return str which is the cc-list */
- *compose_hdr(), /* passes hdr_format to format_hdr() for displays */
- *format_hdr(), /* returns a formatted line describing passed msg # */
- ! *real_header_field(),/* the line in msg described by arg (message header) */
- ! *header_field(), /* like the real_ version, but cached or extended */
- *reply_to(), /* who do we reply to when responding */
- *subject_to(), /* when responding, return str which is the subject */
-
- ***************
- *** 589,597 ****
- #ifdef TIOCGLTC
- struct ltchars ltchars; /* tty character settings */
- #endif /* TIOCGLTC */
- ! #if defined(BSD) && !defined(AIX) /* (TIOCGETC) */
- struct tchars tchars; /* more tty character settings */
- ! #endif /* BSD && !AIX (TIOCGETC) */
-
- #ifdef CURSES
-
- --- 637,645 ----
- #ifdef TIOCGLTC
- struct ltchars ltchars; /* tty character settings */
- #endif /* TIOCGLTC */
- ! #if defined(BSD) && !defined(AIX)
- struct tchars tchars; /* more tty character settings */
- ! #endif /* BSD && !AIX */
-
- #ifdef CURSES
-
- diff -rc --new-file orig/mush-7.2.5/pick.c mush-7.2.5/pick.c
- *** orig/mush-7.2.5/pick.c Fri Oct 30 19:55:41 1992
- --- mush-7.2.5/pick.c Wed Oct 27 17:21:38 1993
- ***************
- *** 370,376 ****
- if (!(p = header_field(n, "subject")))
- break;
- } else if (search_from) {
- ! if (!(p = header_field(n, "from"))) {
- /*
- * Check for MSG_SEPARATOR here? Maybe not...
- */
- --- 370,376 ----
- if (!(p = header_field(n, "subject")))
- break;
- } else if (search_from) {
- ! if (!(p = header_field(n, "source"))) {
- /*
- * Check for MSG_SEPARATOR here? Maybe not...
- */
- ***************
- *** 384,394 ****
- *p2 = 0;
- }
- } else if (search_to) {
- ! if (!(p = header_field(n, "to")) &&
- ! !(p = header_field(n, "apparently-to")))
- break;
- } else if (*search_hdr) {
- ! if (!(p = header_field(n, search_hdr)))
- break;
- }
- if (icase)
- --- 384,393 ----
- *p2 = 0;
- }
- } else if (search_to) {
- ! if (!(p = header_field(n, "target")))
- break;
- } else if (*search_hdr) {
- ! if (!(p = real_header_field(n, search_hdr)))
- break;
- }
- if (icase)
- diff -rc --new-file orig/mush-7.2.5/pmush.c mush-7.2.5/pmush.c
- *** orig/mush-7.2.5/pmush.c Fri Oct 30 19:56:16 1992
- --- mush-7.2.5/pmush.c Sat Sep 11 20:42:58 1993
- ***************
- *** 9,17 ****
- variable POP3_SUPPORT is defined.
- **************************************************************************/
-
- #ifdef POP3_SUPPORT
-
- - #include "config.h"
- #include "mush.h"
- #include "pop.h"
-
- --- 9,18 ----
- variable POP3_SUPPORT is defined.
- **************************************************************************/
-
- + #include "config.h"
- +
- #ifdef POP3_SUPPORT
-
- #include "mush.h"
- #include "pop.h"
-
- ***************
- *** 203,225 ****
- close(open(mailbox, O_WRONLY | O_CREAT | O_EXCL, 0600));
- }
- }
- ! if (!(mfstream = fopen(mailbox, "a"))) {
- ! perror("Error opening mailbox in loadmail");
- pop_close(postinfo);
- return;
- }
- for (i = 1; i <= msgcount; i++) { /* Load new messages */
- msgptr = pop_retrieve(postinfo, i);
- ! dateline = date(msgptr);
- ! fromline = from_line(msgptr);
- ! if (fprintf(mfstream, "\nFrom %s %s\n%s", fromline, dateline, msgptr)
- ! < (strlen(fromline) + strlen(dateline) + strlen(msgptr))) {
- ! fprintf(stderr, "Error writing mailbox file\n");
- ! pop_close(postinfo);
- ! cleanup(-1);
- }
- - free(dateline);
- - free(fromline);
- free(msgptr);
- if (pop_delete(postinfo, i)) {
- fprintf(stderr, "Error deleting message from post office: %s\n",
- --- 204,236 ----
- close(open(mailbox, O_WRONLY | O_CREAT | O_EXCL, 0600));
- }
- }
- ! if ((mfstream = fopen(mailbox, "a")) == NULL) {
- ! perror(mailbox);
- pop_close(postinfo);
- return;
- }
- for (i = 1; i <= msgcount; i++) { /* Load new messages */
- msgptr = pop_retrieve(postinfo, i);
- ! if (msgptr == NULL) break;
- ! if (strncmp(msgptr,"From ",5) == 0) {
- ! if (fputs(msgptr,mfstream) < 0) {
- ! perror(mailbox);
- ! pop_close(postinfo);
- ! cleanup(-1);
- ! }
- ! }
- ! else {
- ! dateline = date(msgptr);
- ! fromline = from_line(msgptr);
- ! if (fprintf(mfstream, "\nFrom %s %s\n%s", fromline, dateline, msgptr)
- ! < (strlen(fromline) + strlen(dateline) + strlen(msgptr))) {
- ! perror(mailbox);
- ! pop_close(postinfo);
- ! cleanup(-1);
- ! }
- ! free(dateline);
- ! free(fromline);
- }
- free(msgptr);
- if (pop_delete(postinfo, i)) {
- fprintf(stderr, "Error deleting message from post office: %s\n",
- ***************
- *** 227,233 ****
- }
- }
- if (fclose(mfstream) == EOF) {
- ! perror("Error closing mailbox file in loadmail");
- pop_close(postinfo);
- return;
- }
- --- 238,244 ----
- }
- }
- if (fclose(mfstream) == EOF) {
- ! perror(mailbox);
- pop_close(postinfo);
- return;
- }
- diff -rc --new-file orig/mush-7.2.5/pop.c mush-7.2.5/pop.c
- *** orig/mush-7.2.5/pop.c Fri Oct 30 19:56:14 1992
- --- mush-7.2.5/pop.c Mon Sep 13 11:12:40 1993
- ***************
- *** 6,11 ****
- --- 6,13 ----
- * August 13, 1991
- */
-
- + #include "config.h"
- +
- #ifdef POP3_SUPPORT
-
- #include <sys/types.h>
- ***************
- *** 47,52 ****
- --- 49,57 ----
- extern char *
- strstr( /* char *, char * */ );
-
- + extern char *
- + index( /* char *, char */);
- +
- #include <netdb.h>
- #include <errno.h>
- #include <stdio.h>
- ***************
- *** 178,212 ****
- #endif
- if (!host) {
- host = getenv("MAILHOST");
- ! if (!host) {
- ! strcpy(pop_error, "Could not determine POP server");
- ! return (0);
- ! }
- ! }
- ! /* Determine the password */
- ! #ifdef KERBEROS
- ! #define DONT_NEED_PASSWORD (! (flags & POP_NO_KERBEROS))
- ! #else
- ! #define DONT_NEED_PASSWORD 0
- ! #endif
- !
- ! /* Modified to return password if possible -- Bart */
- ! if ((!password || !*password) && (!DONT_NEED_PASSWORD)) {
- ! if (!(flags & POP_NO_GETPASS)) {
- ! char *p = getpass("Enter POP password:");
- ! if (p && password)
- ! (void) strcpy(password, p);
- ! password = p;
- ! }
- ! if (!password) {
- ! strcpy(pop_error, "Could not determine POP password");
- ! return (0);
- ! }
- }
- - if (password)
- - flags |= POP_NO_KERBEROS;
- - else
- - password = username;
-
- sock = socket_connection(host, flags);
- if (sock == -1)
- --- 183,191 ----
- #endif
- if (!host) {
- host = getenv("MAILHOST");
- ! if (host == NULL || host[0] == '\0')
- ! host = "mailhost";
- }
-
- sock = socket_connection(host, flags);
- if (sock == -1)
- ***************
- *** 233,250 ****
- "Username too long; recompile pop.c with larger ERROR_MAX");
- return (0);
- }
- ! sprintf(pop_error, "USER %s", username);
-
- if (sendline(server, pop_error) || getok(server)) {
- return (0);
- }
- if (strlen(password) > ERROR_MAX - 6) {
- pop_close(server);
- strcpy(pop_error,
- "Password too long; recompile pop.c with larger ERROR_MAX");
- return (0);
- }
- ! sprintf(pop_error, "PASS %s", password);
-
- if (sendline(server, pop_error) || getok(server)) {
- return (0);
- --- 212,255 ----
- "Username too long; recompile pop.c with larger ERROR_MAX");
- return (0);
- }
- ! sprintf(pop_error, "USER \"%s\"", username);
-
- if (sendline(server, pop_error) || getok(server)) {
- return (0);
- }
- +
- + /* Determine the password */
- + #ifdef KERBEROS
- + #define DONT_NEED_PASSWORD (! (flags & POP_NO_KERBEROS))
- + #else
- + #define DONT_NEED_PASSWORD 0
- + #endif
- +
- + /* Modified to return password if possible -- Bart */
- + if ((!password || !*password) && (!DONT_NEED_PASSWORD)) {
- + if (!(flags & POP_NO_GETPASS)) {
- + char *p = getpass("Password: ");
- + if (p && password)
- + (void) strcpy(password, p);
- + password = p;
- + }
- + if (!password) {
- + strcpy(pop_error, "Could not determine POP password");
- + return (0);
- + }
- + }
- + if (password)
- + flags |= POP_NO_KERBEROS;
- + else
- + password = username;
- +
- if (strlen(password) > ERROR_MAX - 6) {
- pop_close(server);
- strcpy(pop_error,
- "Password too long; recompile pop.c with larger ERROR_MAX");
- return (0);
- }
- ! sprintf(pop_error, "PASS \"%s\"", password);
-
- if (sendline(server, pop_error) || getok(server)) {
- return (0);
- ***************
- *** 882,888 ****
- int ret;
-
- cp = buf;
- ! while ((ret = write(fd, cp, nbytes)) > 0) {
- cp += ret;
- nbytes -= ret;
- }
- --- 887,893 ----
- int ret;
-
- cp = buf;
- ! while (nbytes > 0 && (ret = write(fd, cp, nbytes)) > 0) {
- cp += ret;
- nbytes -= ret;
- }
- ***************
- *** 969,985 ****
- * Changes made to the maildrop since the session was started (or
- * since the last pop_reset) may be lost.
- */
- void
- pop_close(server)
- PopServer server;
- {
- - sendline(server, "RSET");
- - sendline(server, "QUIT");
-
- ! close(server->file);
- ! free((char *) server);
-
- ! return;
- }
-
- #endif /* POP3_SUPPORT */
- --- 974,996 ----
- * Changes made to the maildrop since the session was started (or
- * since the last pop_reset) may be lost.
- */
- +
- + unsigned pop_closing = 0;
- +
- void
- pop_close(server)
- PopServer server;
- {
-
- ! if (pop_closing == 0) {
- ! pop_closing = 1;
- !
- ! sendline(server, "RSET");
- ! sendline(server, "QUIT");
-
- ! close(server->file);
- ! free((char *) server);
- ! }
- }
-
- #endif /* POP3_SUPPORT */
- diff -rc --new-file orig/mush-7.2.5/signals.c mush-7.2.5/signals.c
- *** orig/mush-7.2.5/signals.c Fri Oct 30 19:55:42 1992
- --- mush-7.2.5/signals.c Sat Oct 16 19:57:00 1993
- ***************
- *** 8,13 ****
- --- 8,14 ----
-
- static int was_stopped;
-
- + #ifndef __linux__
- #ifndef SYSV
- extern char *sys_siglist[];
- #else
- ***************
- *** 34,40 ****
- /* SIGCLD */ "death of a child",
- /* SIGPWR */ "power-fail restart"
- };
- ! #endif /* SYSV */
-
- SIGRET
- intrpt(sig)
- --- 35,42 ----
- /* SIGCLD */ "death of a child",
- /* SIGPWR */ "power-fail restart"
- };
- ! #endif /* !SYSV */
- ! #endif /* !__linux__ */
-
- SIGRET
- intrpt(sig)
- ***************
- *** 425,431 ****
- if (last_check < 0)
- last_check = time((long *)0);
-
- ! if (istool || time((long *)0) - last_check > time_out) {
- popchkmail();
- last_check = time((long *)0);
- }
- --- 427,434 ----
- if (last_check < 0)
- last_check = time((long *)0);
-
- ! if (isoff(glob_flags,DONT_CHECK)
- ! && (istool || time((long *)0) - last_check > time_out)) {
- popchkmail();
- last_check = time((long *)0);
- }
- diff -rc --new-file orig/mush-7.2.5/sort.c mush-7.2.5/sort.c
- *** orig/mush-7.2.5/sort.c Mon Oct 22 03:25:03 1990
- --- mush-7.2.5/sort.c Wed Oct 27 18:04:05 1993
- ***************
- *** 40,45 ****
- --- 40,46 ----
- case 'l': /* sort by length in bytes */
- case 'S': /* sort by message status */
- case 'p': /* sort by message priority */
- + case 't': /* sort by addressee */
- /* skip consecutive repeats of the same flag */
- if (depth < 1 || subsort[depth-1] != argv[0][n])
- subsort[depth++] = argv[0][n];
- ***************
- *** 164,175 ****
-
- author_cmp(msg1, msg2)
- register struct msg *msg1, *msg2;
- {
- char buf1[HDRSIZ], buf2[HDRSIZ];
- int retval;
-
- ! (void) reply_to(msg1 - msg, 0, buf1); /* "0" for "author only" */
- ! (void) reply_to(msg2 - msg, 0, buf2);
- Debug("author: msg %d: %s, msg %d: %s\n", msg1-msg, buf1, msg2-msg, buf2);
- if (ignore_case)
- retval = lcase_strncmp(buf1, buf2, -1) * order;
- --- 165,177 ----
-
- author_cmp(msg1, msg2)
- register struct msg *msg1, *msg2;
- + #if 1
- {
- char buf1[HDRSIZ], buf2[HDRSIZ];
- int retval;
-
- ! (void) author_to(msg1 - msg, buf1);
- ! (void) author_to(msg2 - msg, buf2);
- Debug("author: msg %d: %s, msg %d: %s\n", msg1-msg, buf1, msg2-msg, buf2);
- if (ignore_case)
- retval = lcase_strncmp(buf1, buf2, -1) * order;
- ***************
- *** 177,182 ****
- --- 179,204 ----
- retval = strcmp(buf1, buf2) * order;
- return retval ? retval : msg_cmp(msg1, msg2);
- }
- + #else
- + {
- + char buf1[HDRSIZ], buf2[HDRSIZ], *p;
- + int retval;
- +
- + if (!(p = header_field(msg1 - msg, "source")))
- + p = "";
- + (void) strcpy(buf1, p);
- + if (!(p = header_field(msg2 - msg, "source")))
- + p = "";
- + (void) strcpy(buf2, p);
- + Debug("authors: (%d): \"%s\" (%d): \"%s\"\n",
- + msg1-msg, buf1, msg2-msg, buf2);
- + if (ignore_case)
- + retval = lcase_strncmp(buf1, buf2, -1) * order;
- + else
- + retval = strcmp(buf1, buf2) * order;
- + return retval ? retval : msg_cmp(msg1, msg2);
- + }
- + #endif
-
- /* compare messages according to size (length) */
- size_cmp(msg1, msg2)
- ***************
- *** 249,254 ****
- --- 271,300 ----
- return retval ? retval : msg_cmp(msg1, msg2);
- }
-
- + /*
- + * compare addressee strings from two messages.
- + */
- + addressee_cmp(msg1, msg2)
- + register struct msg *msg1, *msg2;
- + {
- + char buf1[HDRSIZ], buf2[HDRSIZ], *p;
- + int retval;
- +
- + if (!(p = header_field(msg1 - msg, "target")))
- + p = "";
- + (void) strcpy(buf1, p);
- + if (!(p = header_field(msg2 - msg, "target")))
- + p = "";
- + (void) strcpy(buf2, p);
- + Debug("addressees: (%d): \"%s\" (%d): \"%s\"\n",
- + msg1-msg, buf1, msg2-msg, buf2);
- + if (ignore_case)
- + retval = lcase_strncmp(buf1, buf2, -1) * order;
- + else
- + retval = strcmp(buf1, buf2) * order;
- + return retval ? retval : msg_cmp(msg1, msg2);
- + }
- +
- date_cmp(msg1, msg2)
- register struct msg *msg1, *msg2;
- {
- ***************
- *** 306,311 ****
- --- 352,358 ----
- when 'R': retval = subj_with_re(msg1, msg2);
- when 'l': retval = size_cmp(msg1, msg2); /* length compare */
- when 'p': retval = pri_cmp(msg1, msg2);
- + when 't': retval = addressee_cmp(msg1, msg2);
- otherwise: retval = status_cmp(msg1, msg2);
- }
- depth = sv_depth;
- diff -rc --new-file orig/mush-7.2.5/xcreat.c mush-7.2.5/xcreat.c
- *** orig/mush-7.2.5/xcreat.c Fri Oct 30 19:56:16 1992
- --- mush-7.2.5/xcreat.c Mon Sep 13 12:17:18 1993
- ***************
- *** 157,171 ****
- int j = -2, i;
-
- q = rindex(name, '/');
- ! if (q)
- ! i = q - name;
- ! else {
- ! i = 0; /* Creating in the current directory */
- ! }
- p = strncpy(buf, name, i);
- if (unique(p, p + i, mode))
- j = myrename(p, name); /* try and rename it, fails if nonexclusive */
- - free(p);
- return j;
- }
-
- --- 157,166 ----
- int j = -2, i;
-
- q = rindex(name, '/');
- ! i = (q == 0) ? 0 : q-name+1;
- p = strncpy(buf, name, i);
- if (unique(p, p + i, mode))
- j = myrename(p, name); /* try and rename it, fails if nonexclusive */
- return j;
- }
-
-